home *** CD-ROM | disk | FTP | other *** search
- **************************************************************************
- **************************************************************************
- *** ***
- *** T C _ S H E L L V1.0 ***
- *** ***
- *** ***
- *** GEM-SHELL für TURBO C ***
- *** ***
- *** ***
- *** 14. 4.1989 ***
- *** ***
- *** ***
- *** (c) 1989 by TMMW Morus Walter ***
- *** ***
- *** ***
- *** Written by ***
- *** ***
- *** Morus Walter ***
- *** ***
- *** ***
- **************************************************************************
- **************************************************************************
-
- Dieses Programm ist Public Domain.
- Es darf frei kopiert und weitergegeben werden.
-
-
- Inhaltsverzeichnis:
-
- 1.0 Einleitung
- 2.0 Allgemeines
- 2.1 TC_Shell-Fileselectorbox
- 2.2 Edit
- 2.3 Projekt
- 2.4 Make
- 2.5 Einstellungen
-
-
- 1.0 Einleitung
-
- Turbo C ist wohl der zur Zeit schnellste C-Compiler für den ST. Vom Editor
- kann ich das allerdings nicht sagen. Ich kann einfach mit einem Programm,
- bei dem man erst eine ganze Sekunde auf die Maustaste drücken muß, bevor
- das Programm etwas davon merkt, nicht arbeiten. Außerdem finde ich es doch
- ziemlich unpraktisch, wenn man für jedes Programm einen eigenen Editor
- verwenden muß ( ein Editor für Turbo C, ein Editor für den Assembler,
- Basic hat sowieso einen eigenen und zum Schreiben von Texten nimmt man
- eine Textverarbeitung (oder gleich zwei wegen Signum!) ), wobei natürlich
- auch noch jedes Programm andere Tastaturkommandos hat. Wozu besitzt man
- schließlich Tempus? So schön die integrierte Entwicklungsumgebung in Bezug
- auf Turnarround-Zeiten auch sein mag, und auch bei der Korrektur von
- Fehlern mag das integrierte Konzept Vorteile haben, die Verwendung eines
- eigenen Editors ist mir doch lieber. Freundlicherweise hat Heimsoeth ja
- neben der integrierten Version auch noch die Kommandozeilenversion mitge-
- liefert. Da ich aber Kommandozeileninterpreter auch nicht so besonders
- schätze, und insbesondere auf die Vorzüge eines komfortablen Make-
- Utilities nicht verzichten wollte, habe ich eine alternative Shell für
- Turbo-C entwickelt.
- Das Ergebnis ist heißt TC_Shell, ist vollständig in GEM eingebunden und
- dient der komfortablen Arbeit mit folgenden Programmen:
- Tempus Editor (andere Editoren ebenfalls möglich)
- TC Compiler
- TC Linker
- Devpac Assembler
- Devpac Debugger
- (die Verwendung eines anderen Assemblers/Debuggers ist, wenn
- auch mit Einschränkungnen möglich)
- Megamax Resource Contruction Set
- (ein anderes RCS kann problemlos verwendet werden)
-
-
- 2.0 Allgemeines
-
- TC_Shell läuft in der hohen (monochromen) und der mittleren Auflösung. Die
- niedrige Auflösung wird nicht unterstützt, da ich aber auch keine
- brauchbaren Editoren kenne, die in dieser Auflösung vernünftig arbeiten
- ist das keine allzugroße Einschränkung; auch die Original TC-Shell
- arbeitet ja nicht in dieser Auflösung.
- Für die beiden möglichen Auflösungen werden zwei verschiedene Resource-
- files verwendet (TC_SHELL.RSC für die hohe und TC_SHELC.RSC für die
- mittlere Auflösung). Beim Programmstart muß sich die entsprechende
- Resourcedatei im gleichen Ordner wie TC_SHELL.PRG befinden. Wird die
- Resourcedatei nicht gefunden, so gibt TC_Shell eine Meldung aus und das
- Programm wird abgebrochen.
- Das Programm belegt im Speicher etwa 60 Kbyte. Die Arbeit mit einer 420K
- Ramdisk hat bei der Entwicklung des Programms (~100 Kbyte Quelltext in 4
- Sourcfiles) zu keinen Speicherplatzproblemen geführt ( 1M Ram, keine
- Accessories).
-
-
- 2.1 Die TC_Shell File-Selector-Box (FSBox)
-
- TC_Shell verwendet eine eigene FSBox, die über folgende Möglichkeiten
- verfügt:
- - Auswahl von bis zu acht Laufwerken mit der Maus; dabei werden nur
- vorhandene Laufwerke anzeigt.
- - Auswahl von 10 Fileextensions per Mausklick; der Text der Extensions
- kann beliebig eingestellt werden; die Pseudo-Extension 'PROG' vereint
- die drei Extensions '*.PRG','*.TOS','*.TTP'.
- - Sortieren der Files nach Filenamen oder Extension
- - Anzeige eines Disketteninfos mit Diskettengröße, belegtem und freiem
- Speicherplatz der Diskette
- - Fileinfo mit Filename, Filegröße, Erstellungsdatum und -zeit sowie
- Anzeige des Protectmodus
- - Absturzsicherheit gegen Eingabe von Underscores ('_')
- - von der FSBox aus können Ordner angelegt und Dateien gelöscht oder
- umbenannt werden
-
- Im folgenden beschreibe ich kurz, wie man mit dieser FSBox arbeitet:
- Nach dem Laden der Directory und dem Öffnen der FSBox präsentiert sich
- diese wie eine erweiterte Standart-FSB, das heißt, man kann mit dem
- Pfadnamen und dem Filenamen genauso umgehen, wie man es bisher gewöhnt
- ist. Auch das Auswählen von Filenamen und das Öffnen und Schließen von
- Ordnern funktioniert weiter genauso wie bisher.
- Die FSBox wurde jedoch um wesentliche Funktionen erweitert. Die Infozeile
- oben in der FSBox zeigt an, wozu die FSBox aufgerufen wurde, wozu also ein
- File ausgewählt werden soll.
- Die Laufwerkbuttons (am linken Rand) dienen der Änderung des Laufwerkes
- von dem die Directory gezeigt werden soll. Es werden die ersten acht
- Laufwerke (soweit vorhanden) dargestellt. Klickt man einen dieser Buttons
- an, so wird das gewünschte Laufwerk in den Pfadnamen eingetragen, die
- Directory geladen und angezeigt. Dabei werden bei jedem Laufwerkwechsel
- alle geöffneten Ordner geschlossen.
- Die Extensionbuttons (auf der rechten Seite) sind vorbelegt, sie können
- aber auch verändert werden, wenn man sie mit den Cursortasten anfährt. Mit
- ihnen kann man die Suchmaske einstellen, so daß nur eine Teildirectory mit
- allen Ordnern und mit den Files, die der Suchmaske entsprechen (die Wild-
- cards '?' und '*' sind zugelassen), angezeigt wird. Mit den beiden Buttons
- 'Name' und 'Typ' links unten kann man wählen ob nach dem Filenamen oder
- den Extensions sortiert werden soll (im zweiten Fall wird natürlich bei
- gleichen Extensions nach den Filenamen nachsortiert).
- Soweit die Erweiterungen die zur Vereinfachung der Fileauswahl dienen. Da-
- neben kann man mit dieser FSBox aber noch Informationen über die einge-
- legte Diskette und einzelne Dateien aufrufen und einfache Diskettenmani-
- pulationen durchführen. Mit einem Doppelklick auf das eingestellte Lauf-
- werksbutton kann man eine Laufwerkinformation aufrufen. Sie enthält die
- Größe, sowie den belegten und den freien Speicherplatz der Diskette. Mit
- einem Doppelklick auf den Filenamen kann man analog eine Dateiinformation
- zu der gerade eingestellen Datei aufrufen, die den Filenamen, die
- Filegröße und das Erstellungsdatum enhält, sowie anzeigt, ob die Datei
- schreib- (und lösch-) geschützt ist (also ähnlich der Funktion 'Info
- zeigen' im Desktop).
- Möchte man einen Ordner anlegen so schreibt man den Ordnernamen in das
- Feld für den Filenamen und klickt 'Folder' an. Es erfolgt noch eine
- Sicherheitsabfrage, bestätigt man die Funktion, so wird der neue Ordner im
- aktuelle Directory (also auch innerhalb bestehender Ordner) neu angelegt.
- ACHTUNG! Wenn auf der Diskette eine gleichnamige Datei besteht, so wird
- diese ohne Warnung zerstört! Mit dem Button 'Rename' kann man Dateien
- umbenennen. Klickt man diesen Button an, so erscheint eine Dialogbox, in
- der der in der FSBox eingestellte Filename angezeigt wird und verändert
- werden kann. Klickt man den Button 'Delete' an, so wird die eingestellte
- Datei nach einer Sicherheitsabfrage gelöscht.
-
-
- 2.2 Edit
-
- Im Edit-Menü wird - wie der Name schon sagt - der Editor aufgerufen.
- Der erste Menüeintrag (" >________.___ ") wird erst aktiv, wenn der Editor
- schon einmal über den Menüeintrag "Edit .C file" oder "Edit .S file"
- gestartet wurde. Es wird dann der Name der dabei aufgerufenen Datei im
- Menüeintrag dargestellt und beim Anklicken wird der Editor mit diesem
- Namen aufgerufen (es wird immer der vollständige Dateipfad mit angegeben,
- auch wenn er nicht angezeigt wird). Diese Funktion dient dazu, den Editor
- für häufig gebrauchtes Source-File schnell und ohne Umweg über die FSBox
- aufzurufen.
- Die Menüpunkte "Edit file ", "Edit .C file ", "Edit .S file ", "Edit .H
- file" unterscheiden sich (außer in der Wirkung auf den ersten Menüeintrag)
- lediglich im Aufruf der FSBox. Bei "Edit" ist die voreingestellte
- Extension '*.*', bei "Edit .C" '*.C' usw. Natürlich kann man jeweils auch
- Dateien auswählen, die nicht dem voreingestellten Extension entsprechen.
- Der Menüpunkt "Quit" dient ( schwer zu raten ) dem Verlassen von TC_Shell.
- Eine Sicherheitsabfrage findet nicht statt.
-
-
- 2.3 Projekt
-
- Die Philosophie der Projektdateien in TC_Shell entspricht im wesentlichen
- der von Turbo C. TC_Shell ermöglicht allerdings keine lokalen Compiler-
- und Assembleroptionen und erlaubt keine Kommentare in Projektdateien.
- Damit sind TC_Shell Projektdateien in Turbo C verwendbar, umgekehrt gilt
- dies allerdings nur sehr eingeschränkt. Für die Bearbeitung von Projekt-
- dateien mit TC_Shell (Funktion 'Make Projekt') ist zusätzlich wichtig, daß
- alle Dateien in Großbuchstaben geschrieben sind. Eine zusätzliche Ein-
- schränkung stellt die Beschränkung der Projektdateien auf maximal 30
- Einträge dar, eine Größe, die man nicht so schnell erreichen dürfte.
- Auf der anderen Seite gibt es auch eine Erweiterung: in Projektdateien
- können (wie bei Megamax C) Headerfiles angegeben werden, wobei es zwei
- Möglichkeiten gibt, globale und lokale Headerdateien. Um die Kompatibili-
- tät zu Turbo C zu wahren, werden Headerdateien mit vorangestelltem '*',
- also gewissermaßen als Kommentare angegeben. Globale Headerdateien gelten
- für alle C-Sourcefiles der P rojektdatei und müssen direkt nach dem '='
- in der dritten Zeile der Projektdatei beginnen; sie enden mit der ersten
- nicht-Headerdatei. Dies ist normalerweise der Startupcode, so daß sich die
- lokalen Headerdateien des ersten C-Sourcefiles problemlos unterscheiden
- lassen (soll kein Startupcode gelinkt werden und ist die erste
- nicht-Headerdatei ein C-Sourcefile, so können für diese Datei keine
- lokalen Headerdateien angegeben werden). Lokale Headerdateien stehen
- direkt vor dem zugehörigen C-Sourcefile und gelten nur für diese Datei.
- Sind Headerdateien angegeben, so wird ein C-Sourcefile nicht nur
- compiliert, wenn es jünger als die zugehörige Object-Datei ist, sondern
- auch wenn dies für die jüngste Headerdatei des Sourcefiles gilt. Dadurch
- ist es etwa möglich, ein Programm komplett (oder auch nur teilweise) neu
- compilieren zu lassen, wenn etwa die Resourcedatei und damit die
- zugehörige Headerdatei geändert wurde.
- Im folgenden stelle ich nochmal beispielhaft den Aufbau einer Projektdatei
- vor (die Kommentare dürfen natürlich in der Projektdatei nicht auf-
- tauchen):
-
- A:\PROGRAMM.PRG Name des zu erzeugenden Programms (mit Extension!)
- = aus Kompatibilitätsgründen nötig (muß auch stets in
- der zweiten Zeile stehen)
- *A:\GLOBAL1.H Globale Headerdatei
- *A:\GLOBAL2.H eine weitere globale Headerdatei
- D:\LIB\TC_START.O Turbo C Startupcode; unbedingt nötig, da hier der
- Programmeinsprung erfolgt, kann aber auch durch eigene
- Routinen ersetzt werden.
- A:\CSOURCE1.C erste Source-Datei, ohne lokale Headerdateien
- *A:\LOKAL.H lokale Headerdatei für die nächste Source-Datei
- A:\CSOURCE2.C zweite Source-Datei, mit lokaler Headerdatei
- A:\ASS_S.S Assemblersource-Datei
- B:\OBJECT.O Objectdatei
- D:\LIB\LIB1.LIB Bibliothektdatei
-
- Projektdateien können mit der TC_Shell komfortabel erstellt und editiert
- werden, es ist nicht nötig sie mit einem Texteditor zu erstellen, so daß
- man sich auch nicht um alle Einzelheiten kümmern muß. Es ist allerdings
- wichtig zu wissen, daß TC_Shell zu jeder Projektdatei (XXX.PRJ) eine
- gleichnamige Linkdatei (XXX.LNK) erzeugt, die den Namen des zu erzeugenden
- Programms und die zu linkenden Object- und Bibliotheksdateien enthält (im
- von TLINK.TTP verarbeitbaren Format, jeder Eintrag steht in einer eigenen
- Zeile; TC_Shell verwendet beim Linkeraufruf prinzipiell diese Dateien).
- Man darf deshalb die Projektdatei nie mit einem Texteditor verändern, ohne
- auch die Linkdatei anzupassen. Dabei ist - um eine spätere Verarbeitung
- mit der TC_Shell zu gewährleisten - auch darauf zu achten, daß hinter den
- Einträgen keine Zeichen (auch keine Leerzeichen) stehen, und daß die
- Großschreibung beachtet wird.
- Aber wie gesagt: TC_Shell ermöglicht die Erstellung und Veränderung von
- Projektdateien, so daß ein Editieren mit dem Texteditor absolut nicht
- nögtig ist.
-
- Nun aber genug der Erklärungen über Projektdateien, kommen wir zu den
- Funktionen des Projektmenüs:
- Der oberste (inaktive) Eintrag enthält den Namen der aktuell geladenen
- Projektdatei. TC_Shell hält jeweils eine Projektdatei im Speicher, auf die
- sich alle Projektfunktionen beziehen, und die mit "Projekt auswählen"
- gewechselt werden kann. Beim Start von TC_Shell kann eine Projektdatei
- entweder über die Kommandozeile (Anmelden von TC_Shell im Desktop mit .PRJ
- und Start von TC_Shell durch Doppelklick auf die gewünschte Projektdatei;
- erweitert man anschließend mit einem Editor in der DESKTOP.INF Datei den
- Filenamen von TC_Shell um den vollständigen Path, so muß die Projektdatei
- nicht mehr notwendigerweise im gleichen Directory stehen wie TC_Shell)
- oder durch eine Voreinstellung in TC_Shell (su.). Eine Angabe in der
- Kommandozeile hat jedoch in jedem Fall Vorrang.
- Mit den folgenden Menüpunkten ("Make", "Run" und "Make All"), kann ein
- Projekt compiliert und gelinkt werden.
- Bei "Make All" werden alle angegebenen C- und Assembler-Sourcefiles
- übersetzt; anschließend wird das Programm gelinkt.
- Bei "Make" und "Run" werden nur geänderte C- und Assembler-Sourcefiles
- übersetzen und nur bei Bedarf (also wenn sich eine Objectdatei oder
- Bibliotheksdatei geändert hat) gelinkt. Dabei ist es möglich, die Funktion
- durch Drücken von 'ESC' abzubrechen, wobei eine entsprechende Meldung
- ausgegeben wird. Entschließt man sich zu Abbruch während gerade der
- Compiler oder Linker läuft, so kann die 'ESC'-Taste bereits während des
- Programmlaufs gedrückt werden (der Compiler oder Linker wird dadurch
- natürlich nicht sofort unterbrochen), wobei man die Taste allerdings
- mehrmals drücken sollte, da nicht sicher ist, ob der Rechner den
- Tastendruck registriert (selbst bei wiederholtem Drücken von 'ESC' ist der
- Erfolg zweifelhaft). Es werden in jedem Fall alle Tasten aus dem Tastatur-
- puffer gelöscht (auch solche die etwa vor 'ESC' stehen und alle 'ESC').
- Bei "Run" wird zusätzlich das erstellte Programm ausgeführt.
- Die Menüpunkte "Run Programm" und "Debug Programm" führen das Programm das
- in der Projektdatei festgelegt ist aus, beziehungsweise rufen den Debugger
- dafür auf.
- Mit "Select Projekt" läßt sich eine neue Projektdatei auswählen und mit
- "Make Projekt" kann man Projektdateien erstellen:
- Dazu dient eine Dialogbox, deren linker Teil der Auswahl der Dateien dient
- und im Aufbau der Fileselectorbox entspricht. Lediglich die Extension-
- buttons sind an anderem Platz (unter dem Feld für die ausgewählten
- Dateien) zu finden, auch kann man die Extensions hier nicht ändern. Der
- Fileselctorteil erlaubt das Anzeigen von Datei- und Diskinfos wie die
- FSBox (Datei löschen, umbennen oder Ordner anlegen ist allerdings nicht
- möglich), abweichend vom FSBox-Aufruf wird Sortieren nach Dateitypen
- voreingestellt.
- Rechts neben dem Fileselectorfeld findet sich das Feld für die ausgewähl-
- ten Dateien, die in die Projektdatei aufgenommen werden sollen. In den
- beiden oberen, abgesetzen Zeilen wird der Name der Projektdatei und der
- Name des zu erstellenden Programmes dargestellt. Darunter findet sich ein
- Feld, in dem jeweils acht Einträge der Projektdatei gezeigt werden, und
- das rechts einen Scrollbalken wie die FSBox besitzt, mit dem in den
- Einträgen geblättert werden kann (natürlich nur bei mehr als acht
- Einträgen).
- Über diesem Feld befinden sich die vier Button "Copy", "Del", "Ins" und
- "New", die zum Editieren dienen, in der obersten Zeile drei Ausgang-
- Button, "Abbruch", "Save" und "Ok".
- Wie erstellt bzw. editiert man nun mit dieser Dialogbox Projektdateien?
- Nun das Prinzip ist ganz einfach, daß man im Fileselctorteil (links)
- Dateien auswählt und an den Projektteil (rechts) übergibt. Im Projektteil
- werden die Dateien mit vollständigem Path angezeigt, der gesammt Name darf
- dabei jeweils nicht länger als 40 Zeichen sein, längere Namen lassen sich
- nicht auswählen. Zum Auswählen gibt es mehrere Möglichkeiten: besteht die
- Datei bereits, so kann man sie durch Doppelklick auf den Dateinamen im
- Fileselector-Feld direkt übergeben, man kann sie aber auch durch Einfach-
- klick selektieren, so daß sie im Name-Feld erscheint und durch Mausklick
- auf den Button "Copy" in die Projektdatei übernehmen. Um Dateien, die auf
- Diskette noch nicht existieren, in die Projektdatei zu übernehmen schreibt
- man einfach ihren Dateinamen in das Namensfeld und klickt Copy an (dabei
- gilt natürlich der eingestellte Path).
- Wird eine Datei an den Projektteil übergeben, so geschieht je nach
- Dateityp (erkannt am Extension) folgendes:
- Wird eine Projektdatei (.PRJ) ausgewählt, so wird der Name in die oberste
- Anzeigezeile übernommen. Existiert die Datei schon, kann sie eingelesen
- werden. Dazu erscheint eine Dialogbox, in der man angeben kann, ob die
- Datei eingelesen werden soll, wobei man Wahl zwischen zusätzlichem
- Einlesen und Ersetzen der bisherigen Einträge hat. Ist anschließend das
- Feld für den Programmnamen leer, so wird hier der Name der Projektdatei
- mit in .PRG geändertem Extension eingestellt. Dieser Name läßt sich durch
- Übergeben von Programmnamen (erkenntlich an den Extensions .PRG, .TOS und
- .TTP) jederzeit ändert.
- Bei der Übergabe von Header-Dateien (.H) Source-Dateien (.C bzw .S),
- Objectdateien (.O) und Bibliotheken (.LIB) wird der Name in den ersten
- freien Eintrag im Projektfeld eingetragen (der nicht unbedingt sichtbar
- sein muß!), wobei außer bei Headerdateien Mehrfachangaben von Dateien
- unmöglich weil unsinnig sind. Sie werden einfach ignoriert, das heißt ohne
- Fehlermeldung übergangen. Dabei gilt es auch als Mehrfachangabe wenn zu
- einer Sourcedatei auch noch die Objectdatei angegeben wird (und umge-
- kehrt).
- Die Reihenfolge der Dateien im Projektfeld ist relevant, das heißt die
- Dateien werden so in die Projekt- (und Link-) Datei übernommen, wie sie
- hier vorliegen (was insbesondere für den Startup-Code wichtig ist).
- Deshalb gibt es zwei Funktionen zum Löschen bzw Einfügen von Einträgen im
- Projektfeld. Gelöscht werden kann erstens durch Auswählen eines Eintrages
- und Anklicken von "Del" (Delete = Löschen) und zweitens durch Doppelklick
- auf den Eintrag. Dabei wird jeweils zunächst der Eintrag in einen
- Leereintrag umgewandelt, der durch einen weiteren Löschvorgang entfernt
- werden kann. Einfügen lassen sich Leereinträge über dem Ausgewählten
- Eintrag durch Anklicken von "Ins" (Insert = Einfügen). Der Button "New"
- dient zum völligen Löschen des Projektfeldes.
- So nun bleiben noch die Möglichkeiten zu Verlassen:
- Abbruch dürfte klar sein; man verläßt die Dialogbox ohne daß die erstellte
- Projektdatei gespeichert wird. Genau dies (das Speichern) erreicht man
- durch den Button "Speichern" (klar nicht?). Aber wozu dient dann noch
- "Ok"? Ganz einfach: mit "Ok" wird die Projektdatei nicht nur gespeichert,
- sondern auch noch als aktuelle Projektdatei übernommen, so daß man sofort
- mit ihr arbeiten kann.
-
-
- 2.4 Make
-
- Im Menü Make finden sich die Funktionen zum Aufruf von Programmen,
- Debugger, Compiler, Linker, Resource Construction Set und Utilities
- unabhänging von der geladenen Projektdatei.
- Die Menüpunkte im einzelnen:
- Mit 'Run Programm ...' kann man ein beliebiges Programm in der FSBox
- auswählen und starten. Bei .TTP-Programmen erscheint eine Dialogbox zum
- Eingeben der Kommandozeile, bei .PRG oder .TOS-Programmen, kann man dies
- durch Drücken der Control-Taste (beim Beenden der FSBox) erreichen (gilt
- übrigens auch für 'Run Programm' und 'Run' im Projektmenü). Ach ja da
- fällt mir noch ein: beim Starten von Programmen stellt TC_Shell in der
- ersten (GEM-Programme) bzw in den ersten beiden (TOS-Programme)
- Bildschirmzeilen den Programmnamen und die übergebene Kommandozeile dar;
- dies geschieht bei allen Programmaufrufen, also auch beim Aufruf von
- Editor, Compiler ....
- Mit 'Debug Programm ...' wird der Debugger aufgerufen, wobei ihm der Name
- des zu debuggenden Programms übergeben wird.
- Mit 'Compile ...' compiliert man ein einzelnes Sourcefile, mit 'Assemble
- ...' ruft man den Assembler auf.
- Nun zum Linken, das sich etwas schwieriger gestaltet. Da eine Kommando-
- zeile höchstens 127 Zeichen lang sein darf, könnte es leicht zu Problemen
- kommen, wollte man alle zu linkenden Dateien in der Kommandozeile angeben,
- schließlich hat man ja - neben den eigenen Objectfiles - allein schon bis
- zu fünf Standartbibliotheken und den Startup-Code anzugeben. TC_SHELL
- verwendet beim Linken deshalb ausschließlich Kommandodateien (das Format
- ist im TC Handbuch beschrieben). Deswegen gibt es auch zwei Menüpunkte zum
- Linken: 'Link .lnk' verwendet man, wenn schon eine Kommandodatei (xxx.LNK)
- existiert, in der FSBox wird dann einfach die Kommandodatei angegeben.
- 'Link ...' verwendet man, wenn noch keine Kommandodatei besteht, oder die
- Kommandodatei geändert werden soll. Es erscheint dann die gleiche Dialog-
- box wie bei 'Make Projekt' und das dort gesagte gilt entsprechend.
- Noch ein Wort zu Compiler- und Linkeraufruf:
- Compiler und Linker geben ihre Fehlermeldungen standartmäßig auf den Bild-
- schirm aus; dies ist natürlich nicht optimal, wenn man aufgetretene Fehler
- später im Editor korrigieren will. Versuche mit I/O-Umleitung brachten
- nicht die gewünschten Resultate (beispielsweise stürzte der Linker ab,
- warum auch immer) und haben den grundsätzlichen Nachteil, daß dann keine
- Meldungen mehr auf den Bildschirm ausgegeben werden. Deshalb verwendet
- TC_Shell ein anderes Konzept: es hängt sich (nur während des Compiler-/
- Linkeraufrufs) durch Verbiegen des TRAP #1-Vektors ins Gemdos und schreibt
- alle Ausgaben zusätzlich in eine Datei, deren Name mit den Compiler-/
- Linkeroptionen (su.) eingestellt werden kann. Wird im Fehlerfall der
- Editor aufgerufen, so wird diese Fehlerdatei als erster Parameter über-
- geben (beim Compiler folgen die Namen der compilierten Sourcedateien). Als
- Dateiname ist übrigens auch "PRN:" für einen Drucker an der
- Centronics-Schnittstelle und "Aux:" für die serielle Schnittstelle
- möglich. Auch "CON:" wäre erlaubt, führt aber nur zu Doppelausgaben auf
- den Bildschirm (merkwürdigerweise buchstaben- weise).
- ACHTUNG! Fehler in der Routine zum Schreiben der Fehlerdateien werden
- gegenwärtig nicht beachtet (in der Gemdos-Routine ist das etwas
- diffiziel). Einen Absturz dürfte das normalerweise nicht zur Folge haben,
- allerdings habe ich bei einer vollen Ramdisk festgestellt, daß dann die
- Ausgabe stark verlangsamt wird. Man sollte also etwas aufpassen, was man
- als Fehlerdateinamen angibt. Im allgemeinen ist die Wahrscheinlichkeit für
- das Auftreten von Fehlern aber nicht zu groß.
- Der Menüpunkt "Utility ..." entspricht mit einer Ausnahme dem Menüpunkt
- "Run Programm ...". Die Ausnahme betrifft die Verwendung eines anderen
- Paths (siehe auch Einstellungen). Geplant ist das so, daß der Path von
- "Utility" auf ein Directory zeigt, in dem Programmierutilities stehen,
- während der Path von "Run Programm ..." auf das entstehende Programm zeigt
- (man muß dann nicht immer in der FSBox den Path wechseln).
- "RCS" dient dem Aufruf des Resource Construction Set; da das von mir
- verwendtete Megamax RCS die Kommandozeile nicht auswertet, wird kein
- Dateiname übergeben.
-
-
- 2.5 Einstellungen
-
- Mit der TC_Shell können im Menü 'Settings' so gut wie alle Turbo C Para-
- meter verändert werden, teilweise sogar mehr als mit der Original-
- TC-Shell.
- Da wären zunächst die Einstellungen für die Projektverwaltung. Neben dem
- Namen der beim Start mitzuladenden Projektdatei (sie wird nur geladen,
- sofern in der Kommandozeile keine andere Datei angegeben wird; wird kein
- Name angegeben, so wird keine Projektdatei geladen) kann man das Verhalten
- von 'Make' (nicht 'Make all') bei fehlenden Sourcedateien einstellen.
- Werden die entsprechenden Button aktiviert, so geht die TC_Shell beim
- Fehlen einer C- oder Assembler-Sourcedatei einfach davon aus, es wäre eine
- Objectdatei eingetragen (deren Existenz überprüft wird). Headerdateien
- können total übergangen werden. Es ist allerdings sinnvoller, die
- Projektdatei zu ändern, da das Suchen nach nicht vorhandenen Dateien auch
- seine Zeit braucht.
- Zum Einstellen der Start-Projektdatei gibt es noch zwei Hilfen:
- 'Search' dient zum Auswählen der Projektdatei mit Hilfe der FSBox. Diese
- Funktion steht auch in den anderen Einstellungsdialogen bei allen dateibe-
- zogenen Angaben zur Verfügung, auch wenn ich sie im folgenden nicht mehr
- nennen werde.
- 'aktuell' übernimmt den Namen der aktuellen Projektdatei.
- Zum Verlassen der Dialogbox gibt es (ählich wie bei 'Make Projekt' drei
- Möglichkeiten, 'Abbruch', dh. Beenden ohne Übernahme der geänderten Daten,
- 'ok', dh. Beenden mit Übernahme der geänderten Daten und zusätzlich
- 'Save', wobei die Daten übernommen werden und gleichzeitig der Name der
- Start-Projektdatei (und nur dieser) in die Systemeinstellungen übernommen
- wird.
- Editor Optionen: Zu den Editor-Optionen gehören neben dem Filenamen des
- Editors die Einstellungen für das Aufrufen des Editors nach Compiler-
- fehlern oder -warnungen sowie nach Linker- und Assemblerfehlern. Dabei
- kann jeweils zwischen Editor nicht aufrufen (nein), Editor immer aufrufen
- (ja) und Editor nach Abfrage aufrufen (bedingt) gewählt werden. Im letzten
- Fall erscheint eine Dialogbox, um in der konkreten Situation zu
- entscheiden, wobei bei 'Make' neben Editor-Aufruf ja/nein (jeweil mit
- Abbruch von Make) auch noch 'weiter' zum Fortsetzen von Make möglich ist
- (vor allem im Fall von Compiler-Warnungen). Bei Make wird übrigens
- unabhängig von der hier getroffenen Einstellung im Fehlerfall stets eine
- Meldung über das Abbrechen von Make ausgegeben.
- Der Editordialog kann (wie alle folgenden) mit 'Ok' oder 'Abbruch'
- verlassen werden.
- Als nächstes kommen wir zu den umfangreichsten Einstellungen: den Com-
- pileroptionen. Dabei möchte ich die Linkeroptionen gleich mitbehandeln, da
- für sie praktisch das gleiche gilt. Die möglichen Einstellungen werden
- leicht klar, wenn man sich im TC-Handbuch die Optionen von TCC (Anhang B)
- bzw die von TLINK (Anhang C) ansieht. Zusätlich kann lediglich der Name
- des Compilers/Linker und der jeweiligen Fehlerdatei angegeben werden. Wird
- keine Fehlerdatei angegeben, so wird auch keine erzeugt.
- Die gewählten Compileroptionen (außer Name des Compilers und der Compiler-
- fehlerdatei) werden nicht mit den allgemeinen Einstellungen von TC_Shell
- in der Datei TC_SHELL.SET gespeichert, sondern in der Datei TCC.CFG
- (ASCII-Datei, siehe Handbuch). Diese Datei wird von TC_Shell nur im
- Bedarfsfall, dh. für das Einstellen der Compileroptionen geladen. Für die
- Linkeroptionen gilt im Prinzip das gleiche, nur das hier dem Linker der
- Name der Kommandodatei (TLINK.LNK) beim Aufruf explizit angegeben werden
- muß (macht TC_Shell natürlich automatisch). Beide Dateien müssen im
- gleichen Directory stehen wie der Compiler bzw Linker.
- Zusätzlich zu den Einstellungen gibt es noch zwei Button: 'Default' und
- 'Restore'. Mit 'Restore' werden die Einstellungen durch erneutes Laden von
- TCC.CFG bzw. TLINK.LNK zurückgesetzt, mit 'Default' lassen sich die
- Standart- einstellungen aufrufen. Im Compilerdialog gibt es noch den
- Button 'Warnungen' mit dem sich die Dialogbox zur Einstellung der
- Compilerwarnungen aufrufen läßt. Es lassen sich alle Warnungen einzeln ein
- bzw ausschalten, mit den Button '0', '1' und '2' lassen sich die
- entsprechenden Warning-Level der TC-Original-Shell einstellen.
- In der Assemblerdialogbox lassen sich - um die Zusammenarbeit mit anderen
- Assemblern als dem von mir verwendetem Devpac zu ermöglichen - die
- Optionen ein- und ausschalten. Bei ausgeschalteten Optionen wird dem
- Assembler nur der Name der zu assemblierenden Datei übergeben. Die anderen
- Einstellungen ergeben sich aus dem Handbuch des Devpac (und funktionieren
- natürlich auch nur bei diesem).
- Sowohl für den Debugger wie auch für das RCS lassen sich nur die Programm-
- namen einstellen, somit kommen wir (endlich) zum vorletzten Punkt, den
- Dateipfaden. TC_Shell verwendet im Zusammenhang mit der FSBox acht
- verschiedene Dateipfade, die auf verschiedene Directories zeigen können.
- Wo die einzelnen Dateipfade jeweils verwendet werden ist der Dialogbox zu
- entnehmen; in ihr können Voreinstellungen vorgenommen werden. Dabei kann
- ein ? als erster Buchstabe für das aktuelle Laufwerk dienen, besteht der
- gesammte Dateipfad nur aus dem ?, so wird er zu '?:\*.*' ergänzt.
- Letzter Punkt: das Speichern der Voreinstellugnen:
- Es geschieht mit dem Menüpunkt 'Save'. Die zugehörige Datei heißt immer
- 'TC_SHELL.SET', so daß bei Anklicken dieses Menüpunktes sofort gespeichert
- wird, wobei der Dateipfad und das Laufwerk vom Programmstart verwendet
- wird. Zusammen mit den gerade besprochenen Systemeinstellungen werden auch
- die Extensions der FSBox gespeichert.
- Beim Starten von TC_Shell wird TC_SHELL.SET geladen. Fehlt die Datei (oder
- konnte sie aus einem anderen Grund nicht geladen werden), so ist TC_Shell
- erst einsatzfähig, wenn man die nötigen Angaben in den Dialogboxen im
- Settings-Menü gemacht hat (Programmnamen ...).
-
-